3-6 配置frp内网穿透服务(本地调试微信接口用)
准备工作清单
| 准备项 | 说明 |
|---|---|
| 公网服务器 | 阿里云/腾讯云/华为云,有固定公网 IP |
| 已备案域名 | 已完成 ICP 备案 |
| SSL 证书 | 使用 acme.sh + DNS API 方式申请 |
| FRP 安装包 | 根据操作系统选择对应版本 |
下载 FRP
根据操作系统选择对应版本:
| 操作系统 | 架构 | 文件 |
|---|---|---|
| Linux(云服务器) | amd64 | frp_x.xx_linux_amd64.tar.gz |
| macOS(Apple 芯片) | arm64 | frp_x.xx_darwin_arm64.tar.gz |
| macOS(Intel) | amd64 | frp_x.xx_darwin_amd64.tar.gz |
| Windows | amd64 | frp_x.xx_windows_amd64.zip |
配置步骤
1. 域名解析配置
在域名服务商添加 DNS 解析记录:
| 记录 | 类型 | 值 | 用途 |
|---|---|---|---|
wechat-dev.domain.com | A | 云服务器 IP | 测试环境 |
wechat-prd.domain.com | A | 云服务器 IP | 生产环境 |
2. 小程序后台配置域名
在"开发管理 > 开发设置 > 服务器域名"中添加已备案域名(用分号分隔多个域名)。
3. 云服务器防火墙配置
需要在两个地方放行端口:
| 位置 | 操作 |
|---|---|
| 云服务商安全组 | 管理后台 > 安全组 > 放行 443、7500 等端口 |
| 服务器防火墙 | Ubuntu: ufw allow 443;CentOS: firewall-cmd --add-port=443/tcp --permanent |
4. SSL 证书申请
使用 acme.sh 以 DNS API 方式申请:
# 安装 acme.sh
curl https://get.acme.sh | sh
# 使用 DNS API 申请通配符证书(以阿里云为例)
export Ali_Key="your_key"
export Ali_Secret="your_secret"
acme.sh --issue --dns dns_ali -d domain.com -d '*.domain.com'
bash
5. FRP 服务端配置(公网服务器)
创建 frps.toml:
bindPort = 7000 # FRP 通信端口
vhostHTTPSPort = 443 # HTTPS 虚拟主机端口
toml
启动服务端:
chmod +x frps
./frps -c frps.toml
bash
6. FRP 客户端配置(本地)
创建 frpc.toml:
serverAddr = "云服务器IP"
serverPort = 7000
[[proxies]]
name = "wechat-dev"
type = "https"
customDomains = ["wechat-dev.domain.com"]
[proxies.transport]
[proxies.transport.tls]
certFile = "../ssl/server.pem"
keyFile = "../ssl/server.key"
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:3000" # 本地 NestJS 服务端口
toml
启动客户端:
chmod +x frpc
./frpc -c frpc.toml
bash
7. 验证联通
# 请求本地服务
curl http://localhost:3000/api/v1/version
# 通过域名请求(经过 FRP 穿透)
curl https://wechat-dev.domain.com/api/v1/version
bash
两者返回相同结果即配置成功。
注意事项
| 注意点 | 说明 |
|---|---|
| FRP 安全 | 生产环境务必配置 token 认证,推荐 OIDC 方式 |
| 端口冲突 | 使用 lsof -i :443 检查端口占用 |
| Windows 权限 | 以管理员身份运行命令行,避免放在 C 盘 |
| Nginx 复用 | 443 端口被占用时可用 Nginx 反向代理做端口复用 |
参考资源
- FRP 官方文档 - 配置示例和安装说明
- acme.sh - SSL 证书申请工具
- Let's Encrypt - 免费 SSL 证书
↑